﻿Public Class frmUsuario

    Private Sub frmUsuario_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        CargarUsuario()
    End Sub

    Dim controller As New ControllerSigeco.controller_sistema()

    Private _codUsuario As Integer = 0

    Public Property codUsuario() As Integer
        Get
            Return _codUsuario
        End Get
        Set(ByVal value As Integer)
            _codUsuario = value
        End Set
    End Property

    Private Shadows Sub KeyUpmask(ByVal MaskedTextboxs As System.Windows.Forms.TextBox, ByVal e As System.Windows.Forms.KeyEventArgs)

        'Teclas que Utilizaremos El cual solo son las numericas
        If e.KeyData = Keys.Space Or e.KeyData = Keys.Decimal Or _
         e.KeyData = Keys.NumPad0 Or e.KeyData = Keys.NumPad1 Or e.KeyData = Keys.NumPad2 Or e.KeyData = Keys.NumPad3 _
           Or e.KeyData = Keys.NumPad4 Or e.KeyData = Keys.NumPad5 Or e.KeyData = Keys.NumPad6 Or _
           e.KeyData = Keys.NumPad7 Or e.KeyData = Keys.NumPad8 Or e.KeyData = Keys.NumPad9 _
           Or e.KeyData = Keys.D0 Or e.KeyData = Keys.D1 Or e.KeyData = Keys.D2 Or e.KeyData = Keys.D3 Or _
           e.KeyData = Keys.D4 Or e.KeyData = Keys.D5 Or e.KeyData = Keys.D6 _
           Or e.KeyData = Keys.D7 Or e.KeyData = Keys.D8 Or e.KeyData = Keys.D9 Or e.KeyData = Keys.Tab Or e.KeyData = Keys.Enter _
            Then

            'Programamos la tecla de Retroceso en el textbox
        ElseIf e.KeyData = Keys.Back And MaskedTextboxs.Text.Length > 0 Then
            On Error Resume Next
            'Removemos un caracter mediante se presione la tecla Back
            MaskedTextboxs.Text.Remove(MaskedTextboxs.SelectionStart - 1)

            'si el textbox es menor que un caracter
        ElseIf MaskedTextboxs.Text.Length < 1 Then
            'ponemos el textbox En Blanco
            MaskedTextboxs.Text = String.Empty
            'ponemos la variable    NumerosYaescritos en Blanco

        Else
            'ponemos el textbox enblanco
            MaskedTextboxs.Text = String.Empty
            'Hacemos Sonar un Beep para indicarle al usuario que ha presionado un caracter y no un Numero
            Beep()
            MsgBox("Introducir solo valores numericos")

        End If

    End Sub

    Private Shadows Sub KeyUp(ByVal TextBoxs As System.Windows.Forms.TextBox, ByVal e As System.Windows.Forms.KeyEventArgs)

        'Teclas que Utilizaremos El cual solo son las numericas
        If e.KeyData = Keys.Space Or e.KeyData = Keys.Decimal Or _
         e.KeyData = Keys.NumPad0 Or e.KeyData = Keys.NumPad1 Or e.KeyData = Keys.NumPad2 Or e.KeyData = Keys.NumPad3 _
           Or e.KeyData = Keys.NumPad4 Or e.KeyData = Keys.NumPad5 Or e.KeyData = Keys.NumPad6 Or _
           e.KeyData = Keys.NumPad7 Or e.KeyData = Keys.NumPad8 Or e.KeyData = Keys.NumPad9 _
           Or e.KeyData = Keys.D0 Or e.KeyData = Keys.D1 Or e.KeyData = Keys.D2 Or e.KeyData = Keys.D3 Or _
           e.KeyData = Keys.D4 Or e.KeyData = Keys.D5 Or e.KeyData = Keys.D6 _
           Or e.KeyData = Keys.D7 Or e.KeyData = Keys.D8 Or e.KeyData = Keys.D9 Or e.KeyData = Keys.Tab Or e.KeyData = Keys.Enter _
           Or e.KeyData = Keys.OemMinus Then

            'Programamos la tecla de Retroceso en el textbox
        ElseIf e.KeyData = Keys.Back And TextBoxs.Text.Length > 0 Then
            On Error Resume Next
            'Removemos un caracter mediante se presione la tecla Back
            TextBoxs.Text.Remove(TextBoxs.SelectionStart - 1)

            'si el textbox es menor que un caracter
        ElseIf TextBoxs.Text.Length < 1 Then
            'ponemos el textbox En Blanco
            TextBoxs.Text = String.Empty
            'ponemos la variable    NumerosYaescritos en Blanco

        Else
            'ponemos el textbox enblanco
            TextBoxs.Text = String.Empty
            'Hacemos Sonar un Beep para indicarle al usuario que ha presionado un caracter y no un Numero
            Beep()
            MsgBox("Introducir solo valores numericos")
        End If

    End Sub

    Private Sub CargarUsuario()
        Try
            If codUsuario > 0 Then

                Dim ds As New DataTable
                ds = controller.get_Usuario_All(oiml.dbConn, codUsuario, "", "", "", "")

                If Not ds Is Nothing Then

                    ' cargar los controles del formulario con los valores de los campos del registro
                    codUsuario = ds.Rows(0)("idUsuario").ToString
                    Me.txtNombre.Text = ds.Rows(0)("nombre").ToString
                    Me.txtDocumento.Text = ds.Rows(0)("documento").ToString
                    Me.txtUsuario.Text = ds.Rows(0)("usuario").ToString
                    Me.txtPassword.Text = ds.Rows(0)("contrasenha").ToString
                    Me.txtDocumento.Text = ds.Rows(0)("documento").ToString
                    cboTipo.Text = ds.Rows(0)("tipoUsuario_").ToString
                    cbxHabilitado.Checked = Boolean.Parse(ds.Rows(0)("habilitado").ToString)
                    txtActualizadoPor.Text = ds.Rows(0)("actualizadoPor_").ToString
                    txtEnFecha.Text = ds.Rows(0)("actualizadoFecha_").ToString

                End If

            Else

                Me.txtNombre.Text = ""
                Me.txtDocumento.Text = ""
                Me.txtPassword.Text = ""
                cboTipo.SelectedIndex = 0
                Me.txtUsuario.Text = ""
                Me.txtDocumento.Text = ""
                cbxHabilitado.Checked = True
                txtActualizadoPor.Text = oiml.Usuario
                txtEnFecha.Text = Date.Now.ToShortDateString
                btneliminar.Visible = False
                txtNombre.Focus()

            End If

        Catch ex As Exception
            MessageBox.Show("Error: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

        End Try

    End Sub

    Private Sub btneliminar_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btneliminar.Click
        Try
            If codUsuario > 0 Then
                If MessageBox.Show("Desea eliminar el registro seleccionado?", "Usuarios", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

                    If controller.Delete_Usuario(oiml.dbConn, codUsuario) Then
                        Me.Close()

                    Else
                        MessageBox.Show("Error: " & controller.MessageError.Message, "Usuarios", MessageBoxButtons.OK, MessageBoxIcon.Error)

                    End If

                End If
            End If


        Catch ex As Exception
            MsgBox(ex.Message)

        End Try
    End Sub

    Private Function ValidarCampos() As Boolean

        Dim controlCampos As Boolean = False

        If txtNombre.Text = "" Then
            ErrorProvider1.SetError(txtNombre, "Campo obligatorio")
            controlCampos = True
        Else
            ErrorProvider1.SetError(txtNombre, "")
        End If

        If txtDocumento.Text = "" Then
            ErrorProvider1.SetError(txtDocumento, "Campo obligatorio")
            controlCampos = True
        Else
            ErrorProvider1.SetError(txtDocumento, "")
        End If

        If txtUsuario.Text = "" Then
            ErrorProvider1.SetError(txtUsuario, "Campo obligatorio")
            controlCampos = True
        Else
            ErrorProvider1.SetError(txtUsuario, "")
        End If

        'If txtTipo.Text = "" Then
        '    ErrorProvider1.SetError(txtTipo, "Campo obligatorio")
        '    controlCampos = True
        'Else
        '    ErrorProvider1.SetError(txtTipo, "")
        'End If
        '
        Return controlCampos

    End Function

    Private Sub btnguardar_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnguardar.Click
        If ValidarCampos() Then
            txtNombre.Focus()
            Exit Sub
        End If

        If codUsuario = 0 Then

            codUsuario = controller.Insert_Usuario(oiml.dbConn, txtUsuario.Text, txtPassword.Text, txtNombre.Text, txtDocumento.Text, cboTipo.Text.Substring(0, 1), oiml.idUsuario)

            If codUsuario > 0 Then
                MessageBox.Show("Registro grabado con exito!", "Usuarios", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                Me.DialogResult = Windows.Forms.DialogResult.OK
                Me.Close()

            Else
                MessageBox.Show("Error: " & controller.MessageError.Message, "Usuarios", MessageBoxButtons.OK, MessageBoxIcon.Error)

            End If

        Else
            If controller.Update_Usuario(oiml.dbConn, codUsuario, txtUsuario.Text, txtPassword.Text, txtNombre.Text, txtDocumento.Text, cboTipo.Text.Substring(0, 1), oiml.idUsuario, cbxHabilitado.Checked) Then

                MessageBox.Show("Registro grabado con exito!", "Usuarios", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                Me.DialogResult = Windows.Forms.DialogResult.OK
                Me.Close()

            Else
                MessageBox.Show("Error: " & controller.MessageError.Message, "Usuarios", MessageBoxButtons.OK, MessageBoxIcon.Error)

            End If

        End If

    End Sub

    Private Sub btncancelar_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncancelar.Click
        Me.Close()
    End Sub


End Class